package easy.trace.core;

import easy.trace.core.context.TraceContext;
import easy.trace.core.dto.ExceptionType;

/**
 * @author easy
 */
public interface ICarrier {

    /**
     * 初始化context
     *
     * @param context
     */
    void init(TraceContext context);

    /**
     * invoke 前执行
     */
    void doBeforeHandle();

    /**
     * invoke 后执行
     */
    void doAfterHandle();

    /**
     * 异常拦截处理
     * @param e
     * @param et
     */
    void doEncounterException(Exception e, ExceptionType et);

    /**
     * 清理数据
     */
    void clear();

}
